package com.heihei.uncompression;

import com.heihei.script.DeComUtil;
import com.heihei.utils.FileUtilsF;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 *  获取压缩脚本
 *
 * @version 1.0
 * @since JDK1.8
 * @author duanhengfei
 * @date 2021年01月27日 16:09:57
 */
public class ComDemo {
    private static String password = null;

    public static void main(String[] args) throws IOException {
        start();
    }

    /**
     * 方法描述: 开始执行
     *
     * @param
     * @Return
     * @throws
     * @author duanhengfei
     * @date 2021年01月27日 16:10:32
     */
    private static void start() throws IOException {
        System.out.println(">>>压缩文件<<<");
        //获取命令字符串
        String command = getCommandLineStr();
        //获取目标命令文件地址
        File validScriptFile = DeComDemo.getValidScriptFile(DeComUtil.getScriptPath());
        FileUtilsF.writeTxtFile(command, validScriptFile, "GBK");
        System.out.println("OK");
        System.out.println("生成的脚本位于：" + validScriptFile.getAbsolutePath());
        if(password != null && password != "") {
            System.out.println("有密码，密码为：" + password);
        } else {
            System.out.println("压缩包无密码");
        }
    }

    /**
     * 方法描述: 获取命令字符串
     *
     * @param
     * @Return {@link String}
     * @throws
     * @author duanhengfei
     * @date 2021年01月27日 16:12:59
     */
    private static String getCommandLineStr() {
        System.out.println("请输入源文件目录");
        File validSrcDir = FileUtilsF.getValidSrcDir();
        Scanner sc = new Scanner(System.in);
        System.out.println("是否要设置密码");
        String isPassword = sc.nextLine();
        if("Y".equalsIgnoreCase(isPassword) || "YES".equalsIgnoreCase(isPassword)) {
            System.out.println("请输入密码（注意：密码会忽略掉前后的空格）");
            password = sc.nextLine().trim();
        } else {
            password = null;
        }
        File[] childFiles = validSrcDir.listFiles();
        StringBuilder sb = new StringBuilder();
        for (File childFile : childFiles) {
            if(childFile.isDirectory()) {
                //拼接命令
                sb.append("\"").append(DeComUtil.getZipPath()).append("\" a \"")
                        .append(new File(validSrcDir, childFile.getName() + ".zip").getAbsolutePath())
                        .append("\" \"")
                        .append(childFile.getAbsolutePath())
                        .append("\"");
                if(password != null && password != "") {
                    sb.append(" -p\"").append(password).append("\"");
                }
                sb.append("\r\n");
            }
        }
        sb.append("pause");
        return sb.toString();
    }
}